/* Nama File : segiempat.h                          */
/* Deskripsi : File header dari class SegiEmpat     */
/* Anggota Kelompok : Dekha Anggareska 13510050		*/
/*                    Fadhil Muhtadin 13510070		*/
/*                    Muhammad Iqbal 13510064		*/
/*                    Yulius Nainggolan 13510090	*/

#ifndef segiempat_h
#define segiempat_h

#include "../../bidang/bidang/bidang.h"
#include <iostream>
using namespace std;

class SegiEmpat : public Bidang{
	/* Empat Sekawan */
	public:
	SegiEmpat();
	/* Konstruktor SegiEmpat */
	/* I.S. SegiEmpat belum tercipta */
	/* F.S. SegiEmpat tercipta */
	SegiEmpat(Cell &TL, Cell &BR);
	/* Konstruktor SegiEmpat dengan parameter */
	/* I.S. SegiEmpat belum tercipta */
	/* F.S. SegiEmpat tercipta */
	SegiEmpat(Cell Cbr, Cell B, Cell C, Cell D);
	/* Konstruktor SegiEmpat dengan parameter */
	/* I.S. SegiEmpat belum tercipta */
	/* F.S. SegiEmpat tercipta */
	SegiEmpat(const SegiEmpat&);
	/* CCtor SegiEmpat */
	/* I.S. SegiEmpat terdefinisi */
	/* F.S. SegiEmpat baru tercipta sebagai kopi SegiEmpat sebelumnya */
	~SegiEmpat();
	/* Destruktor SegiEmpat */
	/* I.S. SegiEmpat terdefinisi */
	/* F.S. SegiEmpat dimusnahkan */
	SegiEmpat& operator=(const SegiEmpat&);
	/* operator assignment SegiEmpat */
	/* I.S. SegiEmpat input terdefinisi */
	/* F.S. SegiEmpat output sama dengan input dengan alokasi memori tersendiri */

	/* Getter & Setter */
    void SetTopLeft(Cell);
	/* Mengeset TL dengan Cell input */
	/* I.S. SegiEmpat terdefinisi */
	/* F.S. TL sama dengan Cell input */
    void SetBottomRight(Cell);
	/* Mengeset BR dengan Cell input */
	/* I.S. SegiEmpat terdefinisi */
	/* F.S. BR sama dengan Cell input */
    Cell GetTopLeft() const;
	/* Mengembalikan nilai TL */
    Cell GetBottomRight() const;
	/* Mengembalikan nilai BR */
	
	void setCorner(int, Cell);
	/* Mengeset cell titik sudut dengan cell input, HANYA UNTUK POLYGON */
	/* I.S. SegiEmpat terdefinisi */
	/* F.S. Sama dengan I.S. */
	
	/* Method Lain */
	int isPointInside(Cell);
	/* Mengembalikan 1 bila Cell input berada dalam SegiEmpat, 0 bila tidak */

	private:
	/* Data Member */
    Cell TL; //TopLeft
    Cell BR; //BottomRight
};
#endif
